package com.powernode.ssm.utils;

/**
 * 用于在线程本地存储当前请求的 Token 和 IP
 */
public class ThreadLocalContext {

    // 用于保存 Token
    private static final ThreadLocal<String> tokenHolder = new ThreadLocal<>();

    // 新增：用于保存 IP
    private static final ThreadLocal<String> ipHolder = new ThreadLocal<>();

    /**
     * 设置当前线程的 Token
     */
    public static void setToken(String token) {
        tokenHolder.set(token);
    }

    /**
     * 获取当前线程的 Token
     */
    public static String getToken() {
        return tokenHolder.get();
    }

    /**
     * 清除当前线程的 Token（非常重要！防止内存泄漏）
     */
    public static void clearToken() {
        tokenHolder.remove();
    }

    //------------------------------------------
    // 新增 IP 相关方法
    //------------------------------------------

    /**
     * 设置当前线程的 IP
     */
    public static void setIp(String ip) {
        ipHolder.set(ip);
    }

    /**
     * 获取当前线程的 IP
     */
    public static String getIp() {
        return ipHolder.get();
    }

    /**
     * 清除当前线程的 IP（非常重要！防止内存泄漏）
     */
    public static void clearIp() {
        ipHolder.remove();
    }

    /**
     * 【可选】一键清除 Token 和 IP（推荐在请求结束时调用，比如使用拦截器或过滤器统一清理）
     */
    public static void clearAll() {
        clearToken();
        clearIp();
    }
}